package com.paic.mhis.hcpms.assessment.biz.service;

import java.util.List;
import java.util.Map;

import com.paic.mhis.core.auth.biz.service.UserDetails;
import com.paic.mhis.hcpms.assessment.dto.IndicaotrSourceDTO;
import com.paic.mhis.hcpms.assessment.dto.IndicatorConfigInfoDTO;
import com.paic.mhis.hcpms.assessment.dto.IndicatorConfigTreeDTO;
import com.paic.mhis.hcpms.assessment.dto.IndicatorHomeInfoDTO;

/**
 * 评价指标配置
 * 
 * @author EX-CAOTIANHUA001
 * 
 */
public interface AssessmentIndicatorService {

	/**
	 * 查询评价指标主配置页面
	 * 
	 * @param regionCode
	 * @return
	 */
	List<IndicatorHomeInfoDTO> queryIndicatorHomePage(String regionCode);
	
	/**
	 * 
	 * @param userName
	 * @return
	 */
	List<IndicatorConfigTreeDTO> queryIndicatorHomeTree(String userName);

	/**
	 * 获取指标配置 <br>
	 * 如果查询出来没有数据 返回一个空对象回去
	 * 
	 * @param indicatorCode
	 * @param regionCode
	 * @param orgLevel
	 *            适用机构
	 * @return
	 */
	IndicatorConfigInfoDTO getIndicatorConfig(String indicatorCode, String regionCode, String orgLevel);

	/**
	 * 获取指标配置 [返回所有适用机构] <br>
	 * 如果查询出来无数据返回 空的List,size = 0
	 * 
	 * @param indicatorCode
	 * @param regionCode
	 * @return
	 */
	List<IndicatorConfigInfoDTO> getIndicatorConfig(String indicatorCode, String regionCode);

	/**
	 * 
	 * @param indicatorCode
	 * @param regionCode
	 * @return
	 */
	IndicatorHomeInfoDTO queryIndicatorConfig(String indicatorCode, String regionCode);

	/**
	 * 
	 * Description:
	 * 
	 * @param sample
	 *            样本数据
	 * @param target
	 *            需要计算的数据
	 * @param indicatorCode
	 *            指标编码
	 * @param prividerLevle
	 *            医院等级
	 * @param regionCode
	 *            统筹区域
	 * @param kpiTime
	 *            计算时间
	 * @return List<IndicaotrSourceDTO> 返回当前需要计算的数据的指标分值
	 * 
	 */
	List<IndicaotrSourceDTO> getIndicatorScore(List<IndicaotrSourceDTO> sample, List<IndicaotrSourceDTO> target,
			String indicatorCode, String prividerLevle, String regionCode, String kpiTime);

	/**
	 * 
	 * @param lisDto
	 */
	Map<String, Object> saveIndicatorConfig(List<IndicatorConfigInfoDTO> lisDto);

	/**
	 * 
	 * @param lisDto
	 */
	Map<String, Object> saveIndicatorConfig(List<IndicatorConfigInfoDTO> lisDto, UserDetails userDetails);

}
